﻿<html>
 <head> 
  <title>Sciter 3.2.0.3新增的对象匹配特性</title> 
 </head> 
 <body> 
    <div class="post" id="post-41991"> 
       <h1 class="storytitle">Sciter 3.2.0.3新增的对象匹配特性</h1> 
       <div class="storycontent"> 
        <p>在Sciter 3.2.0.3中，我为内建的<code>like</code>操作符和<code>switch/like</code>语句添加了所谓的'对象匹配'特性。</p> 
        <p>设想我们有一个类似下面的对象/数据列表:</p> 
        <pre class="brush: js;">      var shoppingCartData = [
        { product:&quot;苹果&quot;, price: 0.95, calories:52 },
        { product:&quot;橘子&quot;, price: 0.75, calories:47 },
        { product:&quot;牙刷&quot;, price: 1.75 },
        &quot;deleted&quot;,
        { product:&quot;Pear&quot;, price: 1.25, calories:57 },      
        { product:&quot;肥皂&quot;, price: 2.75 },
      ];
</pre> 
        <p>我们要将其中的事务于其他物品分离开，若使用新的switch/like特性，语句如下:</p> 
        <pre class="brush: js;">for( var item in shoppingCartData ) 
  switch(item) 
  {
     like { price: Float, calories: Integer } :  
           // 一个食物项
           ...
           break; 
     like { price: Float } : 
           // 不是食物项
           ...
           break;            
     case &quot;deleted&quot; :
           // 被删除项，跳过它 
           break;
     default:
           // 未知项，这是一个彩蛋? 
           break; 
  }

</pre> 
<p>为<code>like</code>添加的模式匹配表达式:</p> 
<pre class="brush: js;">if( item like { product: String, price: Float } )
    stdout.println( item, &quot;is a pricey product&quot; );
</pre> 
        <p>希望这个新特性会为你们的工作带来便利。</p> 
       </div> 
      </div> 
 </body>
</html>
